#include <stdio.h>
#include <stdarg.h>
void average(int length,...)
{
	// 初始化 va_list 变量用于访问可变参数列表
	va_list list;
	int count;
	float sum=0;
	// 初始化可变参数列表
	va_start(list,length);
	printf("%p\n",&length);
	printf("%p\n",list);
	printf("%d\n",(int)list - (int)(&length));
	// 循环获取 va_list 变量的值
	for(count=0;count < length;count++)
	{
		//printf("%d\n",va_arg(list,int));
		sum+=va_arg(list,int);
	}
	printf("%f\n",sum);
	va_end(list);
}
/* 自己使用指针的方式实现不行了，好像这个实现已经改了  */
void average2(int length,...)
{
	float sum=0;
	char *p=(char *)(&length);
	p=p+4;
	printf("%p\n",&length);
	printf("%p\n",p);
	printf("%d\n",(int)p - (int)(&length));
	for(int count=1;count<=length;count++)
	{
		//printf("%d => %d\n",count,*p);
		p+=4;
		//sum+=*(p+count);
	}
	//printf("%f\n",*p);
	//printf("%d\n",length);
	//printf("%d\n",sum);
}
int main(void)
{
     	printf("average:\n");  
	average(5,3,4,5,6,7);
     	printf("average2:\n");  
	average2(5,3,4,5,6,7);
	int i = 1, j = 2, k = 3, z = 4, num = 4;  
     	//printf("test1:\n");  
     	//test(num, i, j, k, z);   
	return 0;
}
